import type { PageParam, PageResult } from '@vben/request';
import type { Dayjs } from 'dayjs';

import { requestClient } from '#/api/request';
export namespace PerFamilyMemberApi {
  /** 家庭成员信息信息 */
  export interface FamilyMember {
    id: number; // 主键ID
    employeeId?: number; // 人员ID，对应 per_employee_id
    relation: string; // 与本人关系（称谓）
    systemPersonId: number; // 系统人员ID，对应system_person.id
    familyName: string; // 姓名
    cardType: string; // 证件类型
    familyIdcard: string; // 证件号码
    birthDate: string; // 出生年月
    politicalStatus: string; // 政治面貌
    occupation: string; // 职业
    workUnit: string; // 工作单位及职务
    contactPhone: string; // 联系电话
    residenceAddress: string; // 居住地址
    status: number; // 是否有效（1：有效，0：无效）
    isFamilyMember: number; // 是否家庭成员（1：是，0：否）
    emergencyContactFlag: boolean; // 是否为紧急联系人（1：是，0：否）
    sortOrder: number; // 排序号
    remarks: string; // 备注
    metadata: string; // 其他参数
  }
}

/** 查询家庭成员信息分页 */
export function getFamilyMemberPage(
  data: PageParam,
  desensitize: boolean,
  encrypt: boolean,
) {
  return requestClient.post<PageResult<PerFamilyMemberApi.FamilyMember>>(
    '/per/family-member/page',
    data,
    { desensitize, encrypt },
  );
}

/** 查询家庭成员信息详情 */
export function getFamilyMember(id: number) {
  return requestClient.get<PerFamilyMemberApi.FamilyMember>(
    `/per/family-member/get?id=${id}`,
  );
}

/** 新增家庭成员信息 */
export function createFamilyMember(data: PerFamilyMemberApi.FamilyMember) {
  return requestClient.post('/per/family-member/create', data);
}

/** 修改家庭成员信息 */
export function updateFamilyMember(data: PerFamilyMemberApi.FamilyMember) {
  return requestClient.put('/per/family-member/update', data);
}

/** 删除家庭成员信息 */
export function deleteFamilyMember(id: number) {
  return requestClient.delete(`/per/family-member/delete?id=${id}`);
}

/** 批量删除家庭成员信息 */
export function deleteFamilyMemberList(ids: number[]) {
  return requestClient.delete(
    `/per/family-member/delete-list?ids=${ids.join(',')}`,
  );
}

/** 导出家庭成员信息 */
export function exportFamilyMember(params: any) {
  return requestClient.download('/per/family-member/export-excel', { params });
}
